package cn.iocoder.devlop.module.annual.report.baseinfo.controller.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;

import static cn.iocoder.devlop.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

/**
 * 年报基本信息表(基本信息，资产状况，党建信息) Base VO，提供给添加、修改、详细的子 VO 使用
 * 如果子 VO 存在差异的字段，请不要添加到这里，影响 Swagger 文档生成
 */
@Data
public class BaseinfoBaseVO {
    @Schema(description = "年报的id", requiredMode = Schema.RequiredMode.REQUIRED)
    private String ancheid;

    @Schema(description = "市场主体的id", requiredMode = Schema.RequiredMode.REQUIRED, example = "14462")
    private String pripid;

    @Schema(description = "年报时间 yyyymmddhhmmss(同一年份年报多次，以最后一次为准)")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime anchedate;

    @Schema(description = "yyyy(年报年度)", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "yyyy(年报年度)不能为空")
    private String ancheyear;

    @Schema(description = "注册号")
    private String regno;

    @Schema(description = "统一社会信用代码", example = "23413")
    private String uniscid;

    @Schema(description = "企业（机构）名称", example = "李四")
    private String entname;

    @Schema(description = "市场主体类型", example = "1")
    private String enttype;

    @Schema(description = "最后一次修改时间(相当于时间戳，每个菜单修改的时候都需要更新基本信息表的时间戳)", requiredMode = Schema.RequiredMode.REQUIRED)
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime lastupdatetime;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime createtime;

    @Schema(description = "1,企业2,农合；3,个体 4 外商  5 常驻代表机构")
    private String entclassify;

    @Schema(description = "年报方式：1 网络  2 纸质(工商)")
    private String annrepform;

    @Schema(description = "年报状态：00 待提交(常驻代表机构使用) 01 待公示(常驻代表机构提交后改为01，其他企业创建后为01)  02 已公示  03 已修改待公示")
    private String state;

    @Schema(description = "1,pc  2,手机app 3微信  4，自助机", example = "2")
    private String sourcetype;

    @Schema(description = "公示状态：1全部公示，2部分公示,3全部不公示")
    private String pubstate;

    @Schema(description = "联络员id", example = "5787")
    private String userid;

    @Schema(description = "企业(企业联系电话),个体(经营者联系电话)，农合（联系电话）")
    private String tel;

    @Schema(description = "企业通信地址")
    private String addr;

    @Schema(description = "邮政编码")
    private String postalcode;

    @Schema(description = "电子邮箱")
    private String email;

    @Schema(description = "经营状态(1、开业，4 、歇业，5、 停业")
    private String busst;

    @Schema(description = "经营状态（中文名称） 开业，歇业，停业")
    private String busstCn;

    @Schema(description = "从业人数")
    private Long empnum;

    @Schema(description = "从业人数是否公示(1 公示，2不公示)")
    private String empnumdis;

    @Schema(description = "企业年报类别", example = "2")
    private String antype;

    @Schema(description = "其中高校毕业生人数(经营者)")
    private Long colgranum;

    @Schema(description = "其中高校毕业生人数(雇工)")
    private Long colemplnum;

    @Schema(description = "其中退役士兵人数(经营者)")
    private Long retsolnum;

    @Schema(description = "其中退役士兵人数(雇工)")
    private Long retemplnum;

    @Schema(description = "其中残疾人人数(经营者)")
    private Long dispernum;

    @Schema(description = "其中残疾人人数(雇工)")
    private Long disemplnum;

    @Schema(description = "其中失业人员再就业人数(经营者)")
    private Long unenum;

    @Schema(description = "其中失业人员再就业人数(雇工)")
    private Long uneemplnum;

    @Schema(description = "隶属企业名称", example = "张三")
    private String dependententname;

    @Schema(description = "资产总额 单位：万元")
    private BigDecimal assgro;

    @Schema(description = "资产总额是否公示 1 公示，2不公示")
    private String assgrodis;

    @Schema(description = "负债总额 单位：万元")
    private BigDecimal liagro;

    @Schema(description = "负债总额是否公示 1 公示，2不公示")
    private String liagrodis;

    @Schema(description = "营业总收入 单位：万元 个体(营业额或营业收入)")
    private BigDecimal vendinc;

    @Schema(description = "营业总收入是否公示 1 公示，2不公示")
    private String vendincdis;

    @Schema(description = "其中主营业务收入 单位：万元 （如果为分支机构，对应分支机构主营业务收入）")
    private BigDecimal maibusinc;

    @Schema(description = "其中主营业务收入是否公示 1 公示，2不公示")
    private String maibusincdis;

    @Schema(description = "利润总额 单位：万元")
    private BigDecimal progro;

    @Schema(description = "利润总额是否公示 1 公示，2不公示")
    private String progrodis;

    @Schema(description = "净利润 单位：万元 （如果为分支机构，对应分支机构净利润）")
    private BigDecimal netinc;

    @Schema(description = "净利润是否公示 1 公示，2不公示")
    private String netincdis;

    @Schema(description = "纳税总额 单位：万元 （如果为分支机构，对应分支机构纳税总额）  个体(营业额或营业收入)")
    private BigDecimal ratgro;

    @Schema(description = "纳税总额是否公示 1 公示，2不公示")
    private String ratgrodis;

    @Schema(description = "所有者权益合计")
    private BigDecimal totequ;

    @Schema(description = "所有者权益合计是否公示 1 公示，2不公示")
    private String totequdis;

    @Schema(description = "党员（预备党员）人数")
    private Long numparm;

    @Schema(description = "党组织建制")
    private String parins;

    @Schema(description = "党组织建制（中文名称）1、党委，2、党总支，3、党支部，4、未成立")
    private String parinsCn;

    @Schema(description = "法定代表人是否党员 1、是，2、否  (如果是个体经营者是否为党员)")
    private String resparmsign;

    @Schema(description = "法定代表人是否党组织书记 1、是，2、否 (如果是个体经营者是否党组织书记)")
    private String resparsecsign;

    @Schema(description = "是否为三有标准企业 0 否  1 是(西藏定制需求，该字段不上报)")
    private String standardesflag;

    @Schema(description = "新发展党组织数 西藏定制需求，该字段不上报)")
    private Long newnumaff;

    @Schema(description = "新发展党员数 西藏定制需求，该字段不上报)")
    private Long newnumparm;

    @Schema(description = "党组织类型  0 未成立党组织 1 单独组织  2 联合组织 西藏定制需求 该字段不上报", example = "2")
    private String partyorgtype;

    @Schema(description = "党组织党员覆盖企业数 西藏定制需求，该字段不上报)")
    private Long partyorgenterprisenum;

    @Schema(description = "合作社名称 农专用", example = "李四")
    private String farspeartname;

    @Schema(description = "成员人数 农专用")
    private Long memnum;

    @Schema(description = "成员人数中农民人数 农专用")
    private Integer farnum;

    @Schema(description = "本年度新增成员人数 农专用")
    private Integer annnewmemnum;

    @Schema(description = "本年度退出成员人数 农专用")
    private Integer annredmemnum;

    @Schema(description = "销售额或营业收入 单元：万元 农专用")
    private BigDecimal priyeasales;

    @Schema(description = "销售额或营业收入是否公示 1 公示，2不公示 农专用")
    private String priyeasalesdis;

    @Schema(description = "盈余总额 单元：万元 农专用")
    private BigDecimal priyeaprofit;

    @Schema(description = "盈余总额是否公示 1 公示，2不公示 农专用")
    private String priyeaprofitdis;

    @Schema(description = "获得政府扶持资金、补助 单元：万元 农专用")
    private BigDecimal priyeasub;

    @Schema(description = "获得政府扶持资金、补助是否公示 1 公示，2不公示  农专用")
    private String priyeasubdis;

    @Schema(description = "金融贷款 单元：万元  农专用")
    private BigDecimal priyealoan;

    @Schema(description = "金融贷款是否公示 1 公示，2不公示  农专用")
    private String priyealoandis;

    @Schema(description = "个体工商户名称  个体用", example = "李四")
    private String name;

    @Schema(description = "经营者姓名 个体用", example = "芋艿")
    private String traname;

    @Schema(description = "资金数额 单位：万元 个体用")
    private BigDecimal fundam;

    @Schema(description = "云上贵州保存资产状况加密的字段(公示用到的字段，不上报)")
    private String encryptionmessage;

    @Schema(description = "云上贵州密码机的防篡改秘钥(公示用到的字段，不上报)")
    private String akbean;

    @Schema(description = "企业经营状态是否公示: 1-公示，2-不公示")
    private String busstsign;

    @Schema(description = "是否有网站网店: 1-是，2-否")
    private String websitsign;

    @Schema(description = "是否有对外担保: 1-是，2-否")
    private String guaranteesign;

    @Schema(description = "企业是否有投资信息或购买其他公司股权: 1-是，2-否")
    private String forinvestsign;

    @Schema(description = "有限责任公司本年度是否发生股东股权转让: 1-是，2-否")
    private String stocktransign;

    @Schema(description = "最后一次保存的附表值")
    private String lasttab;

    @Schema(description = "是否有党建信息(1 有  2 没有  公示用不上报)")
    private String partybuilding;

}
